// 生成 UUID
function getUuid() {
	return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
		var r = (Math.random() * 16) | 0,
			v = c == 'x' ? r : (r & 0x3) | 0x8;
		return v.toString(16);
	});
}

// 格式化时间戳
function dateFormat(fmt, samp) {
	var o = {
		"M+": new Date(samp).getMonth() + 1, //月份 
		"d+": new Date(samp).getDate(), //日 
		"h+": new Date(samp).getHours(), //小时 
		"m+": new Date(samp).getMinutes(), //分 
		"s+": new Date(samp).getSeconds(), //秒 
		"q+": Math.floor((new Date(samp).getMonth() + 3) / 3), //季度 
		"S": new Date(samp).getMilliseconds() //毫秒 
	};
	if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (new Date(samp).getFullYear() + "").substr(4 - RegExp.$1
		.length));
	for (var k in o)
		if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((
			"00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}

// 获取友好的时间显示2
function getFriendlyTime1(createDate, nowDate) {
	createDate = createDate instanceof Date ? createDate : new Date();
	nowDate = nowDate instanceof Date ? nowDate : new Date();

	const timeSamp = nowDate.getTime() - createDate.getTime();
	const createId = createDate.getFullYear() + createDate.getMonth() + createDate.getDate();
	const nowId = nowDate.getFullYear() + nowDate.getMonth() + nowDate.getDate();
	if (createId != nowId) {
		// 24小时 < 时间 < 48小时
		if (timeSamp < 2 * 24 * 60 * 60 * 1000) return '昨天';
		// 48小时 < 时间 < 7天
		if (timeSamp < 7 * 24 * 60 * 60 * 1000) return getDayName1(createDate.getDay());
		// 7天 < 时间 < +∞
		let MM = String(createDate.getMonth() + 1);
		MM = MM.length < 2 ? `0${MM}` : MM;
		let DD = String(createDate.getDate());
		DD = DD.length < 2 ? `0${DD}` : DD;
		return `${MM}-${DD}`;
	}

	// -∞ < 时间 < 1分钟
	if (timeSamp < 60 * 1000) return '刚刚';
	// 1分钟 < 时间 < 1小时
	if (timeSamp < 60 * 60 * 1000) {
		let m = Math.floor(timeSamp / (60 * 1000));
		m = m < 1 ? 1 : m
		return `${m}分钟前`;
	}
	// 1小时 < 时间 < 24小时
	let hh = String(createDate.getHours());
	hh = hh.length < 2 ? `0${hh}` : hh;
	let mm = String(createDate.getMinutes());
	mm = mm.length < 2 ? `0${mm}` : mm;
	return `${hh}:${mm}`;
}

// 获取当天的名称1
function getDayName1(day) {
	if (day == 0) return '星期日';
	if (day == 1) return '星期一';
	if (day == 2) return '星期二';
	if (day == 3) return '星期三';
	if (day == 4) return '星期四';
	if (day == 5) return '星期五';
	if (day == 6) return '星期六';
}

// 获取当天的名称2
function getDayName2(day) {
	if (day == 0) return '周日';
	if (day == 1) return '周一';
	if (day == 2) return '周二';
	if (day == 3) return '周三';
	if (day == 4) return '周四';
	if (day == 5) return '周五';
	if (day == 6) return '周六';
}

module.exports = {
	getUuid, // 生成 UUID
	dateFormat, // 格式化时间戳
	getFriendlyTime1, // 获取友好的时间显示1
	getDayName1, // 获取当天的名称1
	getDayName2, // 获取当天的名称2
}
